﻿/*
 Program analogiczny do	WR-Z-12		(03-IV-113)

 Program perforuje napisy w tzw. kodzie wizualnym:
 znaki kodu dalekopisowego nr 2 wprowadzane z dalekopisu
 tłumaczy na układy rządków na taśmie wychodzącej z perforatora 5-kanałowego tak,
 iż układ dziurek przypomina kształtem litery, cyfry i znaki przestankowe
 o zmiennej szerokości do 6 kwintetów, w układzie poziomym.
 Wzorce kształtów pasują również do programu 8H5z.
 Program pracuje na drugiej ścieżce ferrytowej i należy go startować od adresu 17400.
 Po zatrzymaniu się wystarczy wcisnąć [StartCPU] dla ponownego uruchomienia.
 Może być wywołany jako podprogram od adresu 17401 z adresem napisu w A w skali 21,
 kończącego się znakiem LF. Znak CR daje całkowicie zadziurkowane pole.
 Jeśli nie przełączono, to pierwszy znak jest z pocztu cyfr.

 Program jest zgodny z alfabetem dalekopisu TTY MKD-2 PL2.
*/


	BLOK	0c17400		;Adres początku programu
;-------------------------------
PROGR	B6 = czTTY	..prog1	;funkcja czytania z dalekopisu
;-------
PODPR	STOP	0	..podp2	;Ślad - powrót do progr. głównego
poczt	DS	0k21		;Poczet: 0=cyfry, 32=litery
podp2	[temp6] = B6		;arch B6
	[temp5] = B5		;arch B5
	[temp4] = B4		;arch B4
	B6 = czTXT		;funkcja czytania z napisu w pamięci
	B5 = A			;adres napisu
	B4 = 0			;liczba znaków w A
	SKS	funkc
	B4 = [temp4]		;odtw B4
	B5 = [temp5]		;odtw B5
	B6 = [temp6]	..PODPR	;odtw B6 i Return
;-------
prog1	A = [kodFS]		;kod FS
	WY	6		;wyprowadzenie kodu FS
	SKS	funkc
	STOP	0	..PROGR	;stop i nawrót
;-------------------------------

funkc	STOP	0	..funk2	;Ślad - powrót do PROGR/PODPR
gdyLS	[poczt] = 0	..B6	;Skocz do czTTY/czTXT; A = znak...
funk2	[temp3] = B3
gdyFS	A  = 32			;znaki z pocztu cyfr
	[poczt] = A	..B6	;Skocz do czTTY/czTXT; A = znak...
jZnak	A  = A >>> 17		;A = znak w skali 21
kodFS	A  = A & 31
	SKND	B6		;gdy NU, pominąć	
	A - 0b11011
	SKZ	gdyFS		;gdy FS, przełączyć na cyfry	
	A - 0b11111
	SKZ	gdyLS		;gdy LS, przełączyć na litery
	A - 0b00010
	SKZ	gdyLF		;gdy LF, koniec tekstu
	B3 = A + [poczt]
	A  = [wzory+B3]
	SKNZ	nRząd		;gdy spacja,
	WY	5		;to dodatkowy pusty rządek
nRząd	WY	5
	A  = A <<< 5
	SKNZ nRząd
	WY	5	..B6	;Skocz do czTTY/czTXT; A = znak...
;-------
gdyLF	B3 = [temp3]	..funkc	;i Powrót po śladzie
;-------
czTTY	WE	1		;A = znak z dalekopisu
	A  = A <<< 34	..jZnak	;i do jZnak
;-------
czTXT	SKNLC B4--,slowo	;czy są jeszcze znaki w słowie
	A  = [znaki]		;są
	A  = A <<< 5	..schow	;i do schowka
slowo	A  = [B5]		;słowo ze znakami tekstu
	SKLC B5++,++		;wskaźnik na nast. słowo
	B4 = 6			;licznik znaków w słowie
schow	[znaki] = A	..jZnak	;i do jZnak
;-------
znaki	DS	0		;znaki słowa, drukowany i pozostałe
temp3	DS	0		;B3 - roboczy
temp4	DS	0		;B4 - licznik znaków w słowie
temp5	DS	0		;B5 = adres kolejnego słowa tekstu
temp6	DS	0		;B6 = funkcja pobierania znaku

;-------------------------------

wzory	EQU	*
	DS     (0b_01110 )k04+(	/*
*/		0b_11111 )k09+(	/*
*/		0b_11111 )k14+(	/*
*/		0b_11111 )k19+(	/*
*/		0b_01110 )k24	;wzór NU

	DS     (0b_11111 )k04+(	/*
*/		0b_10101 )k09+(	/*
*/		0b_10101 )k14+(	/*
*/		0b_10101 )k19+(	/*
*/		0b_10001 )k24	;wzór E

	DS     (0b_10101 )k04+(	/*
*/		0b_10101 )k09+(	/*
*/		0b_10101 )k14+(	/*
*/		0b_10101 )k19+(	/*
*/		0b_10101 )k24	;wzór LF

	DS     (0b_11110 )k04+(	/*
*/		0b_00101 )k09+(	/*
*/		0b_00101 )k14+(	/*
*/		0b_00101 )k19+(	/*
*/		0b_11110 )k24	;wzór A

	DS     (0b_00000 )k04	;wzór SP

	DS     (0b_10010 )k04+(	/*
*/		0b_10101 )k09+(	/*
*/		0b_10101 )k14+(	/*
*/		0b_10101 )k19+(	/*
*/		0b_01001 )k24	;wzór S

	DS     (0b_10001 )k04+(	/*
*/		0b_11111 )k09+(	/*
*/		0b_10001 )k14	;wzór I

	DS     (0b_01111 )k04+(	/*
*/		0b_10000 )k09+(	/*
*/		0b_10000 )k14+(	/*
*/		0b_10000 )k19+(	/*
*/		0b_01111 )k24	;wzór U

	DS     (0b_11111 )k04+(	/*
*/		0b_11111 )k09+(	/*
*/		0b_11111 )k14+(	/*
*/		0b_11111 )k19+(	/*
*/		0b_11111 )k24+(	/*
*/		0b_11111 )k29+(	/*
*/		0b_11111 )k34	;wzór CR

	DS     (0b_11111 )k04+(	/*
*/		0b_10001 )k09+(	/*
*/		0b_10001 )k14+(	/*
*/		0b_10001 )k19+(	/*
*/		0b_01110 )k24	;wzór D

	DS     (0b_11111 )k04+(	/*
*/		0b_00101 )k09+(	/*
*/		0b_01101 )k14+(	/*
*/		0b_10101 )k19+(	/*
*/		0b_10010 )k24	;wzór R

	DS     (0b_01000 )k04+(	/*
*/		0b_10001 )k09+(	/*
*/		0b_10001 )k14+(	/*
*/		0b_10001 )k19+(	/*
*/		0b_01111 )k24	;wzór J

	DS     (0b_11111 )k04+(	/*
*/		0b_00010 )k09+(	/*
*/		0b_00100 )k14+(	/*
*/		0b_01000 )k19+(	/*
*/		0b_11111 )k24	;wzór N

	DS     (0b_11111 )k04+(	/*
*/		0b_00101 )k09+(	/*
*/		0b_00101 )k14+(	/*
*/		0b_00101 )k19+(	/*
*/		0b_00001 )k24	;wzór F

	DS     (0b_01110 )k04+(	/*
*/		0b_10001 )k09+(	/*
*/		0b_10001 )k14+(	/*
*/		0b_10001 )k19+(	/*
*/		0b_01010 )k24	;wzór C

	DS     (0b_11111 )k04+(	/*
*/		0b_00100 )k09+(	/*
*/		0b_00100 )k14+(	/*
*/		0b_01010 )k19+(	/*
*/		0b_10001 )k24	;wzór K

	DS     (0b_00001 )k04+(	/*
*/		0b_00001 )k09+(	/*
*/		0b_11111 )k14+(	/*
*/		0b_00001 )k19+(	/*
*/		0b_00001 )k24	;wzór T

	DS     (0b_10001 )k04+(	/*
*/		0b_11001 )k09+(	/*
*/		0b_10101 )k14+(	/*
*/		0b_10011 )k19+(	/*
*/		0b_10001 )k24	;wzór Z

	DS     (0b_11111 )k04+(	/*
*/		0b_10000 )k09+(	/*
*/		0b_10000 )k14+(	/*
*/		0b_10000 )k19+(	/*
*/		0b_10000 )k24	;wzór L

	DS     (0b_11111 )k04+(	/*
*/		0b_01000 )k09+(	/*
*/		0b_00100 )k14+(	/*
*/		0b_01000 )k19+(	/*
*/		0b_11111 )k24	;wzór W

	DS     (0b_11111 )k04+(	/*
*/		0b_00100 )k09+(	/*
*/		0b_00100 )k14+(	/*
*/		0b_00100 )k19+(	/*
*/		0b_11111 )k24	;wzór H

	DS     (0b_00001 )k04+(	/*
*/		0b_00010 )k09+(	/*
*/		0b_11100 )k14+(	/*
*/		0b_00010 )k19+(	/*
*/		0b_00001 )k24	;wzór Y

	DS     (0b_11111 )k04+(	/*
*/		0b_00101 )k09+(	/*
*/		0b_00101 )k14+(	/*
*/		0b_00101 )k19+(	/*
*/		0b_00010 )k24	;wzór P

	DS     (0b_01110 )k04+(	/*
*/		0b_10001 )k09+(	/*
*/		0b_10001 )k14+(	/*
*/		0b_11001 )k19+(	/*
*/		0b_11110 )k24	;wzór Q

	DS     (0b_01110 )k04+(	/*
*/		0b_10001 )k09+(	/*
*/		0b_10001 )k14+(	/*
*/		0b_10001 )k19+(	/*
*/		0b_01110 )k24	;wzór O

	DS     (0b_11111 )k04+(	/*
*/		0b_10101 )k09+(	/*
*/		0b_10101 )k14+(	/*
*/		0b_10101 )k19+(	/*
*/		0b_01010 )k24	;wzór B

	DS     (0b_01110 )k04+(	/*
*/		0b_10001 )k09+(	/*
*/		0b_10101 )k14+(	/*
*/		0b_10101 )k19+(	/*
*/		0b_11101 )k24	;wzór G

	DS     (0b_01000 )k04+(	/*
*/		0b_01100 )k09+(	/*
*/		0b_01110 )k14+(	/*
*/		0b_01100 )k19+(	/*
*/		0b_01000 )k24	;wzór FS

	DS     (0b_11111 )k04+(	/*
*/		0b_00010 )k09+(	/*
*/		0b_00100 )k14+(	/*
*/		0b_00010 )k19+(	/*
*/		0b_11111 )k24	;wzór M

	DS     (0b_10001 )k04+(	/*
*/		0b_01010 )k09+(	/*
*/		0b_00100 )k14+(	/*
*/		0b_01010 )k19+(	/*
*/		0b_10001 )k24	;wzór X

	DS     (0b_00011 )k04+(	/*
*/		0b_01100 )k09+(	/*
*/		0b_10000 )k14+(	/*
*/		0b_01100 )k19+(	/*
*/		0b_00011 )k24	;wzór V

	DS     (0b_00010 )k04+(	/*
*/		0b_00110 )k09+(	/*
*/		0b_01110 )k14+(	/*
*/		0b_00110 )k19+(	/*
*/		0b_00010 )k24	;wzór LS

	DS     (0b_01110 )k04+(	/*
*/		0b_11111 )k09+(	/*
*/		0b_11111 )k14+(	/*
*/		0b_11111 )k19+(	/*
*/		0b_01110 )k24	;wzór NU

	DS     (0b_10001 )k04+(	/*
*/		0b_10001 )k09+(	/*
*/		0b_10101 )k14+(	/*
*/		0b_10101 )k19+(	/*
*/		0b_01010 )k24	;wzór 3

	DS     (0b_10101 )k04+(	/*
*/		0b_10101 )k09+(	/*
*/		0b_10101 )k14+(	/*
*/		0b_10101 )k19+(	/*
*/		0b_10101 )k24	;wzór LF

	DS     (0b_00100 )k04+(	/*
*/		0b_00100 )k09+(	/*
*/		0b_00100 )k14+(	/*
*/		0b_00100 )k19+(	/*
*/		0b_00100 )k24	;wzór -

	DS     (0b_00000 )k04	;wzór SP

	DS     (0b_00010 )k04+(	/*
*/		0b_00001 )k09	;wzór '

	DS     (0b_01010 )k04+(	/*
*/		0b_10101 )k09+(	/*
*/		0b_10101 )k14+(	/*
*/		0b_10101 )k19+(	/*
*/		0b_01010 )k24	;wzór 8

	DS     (0b_00001 )k04+(	/*
*/		0b_11001 )k09+(	/*
*/		0b_00101 )k14+(	/*
*/		0b_00011 )k19+(	/*
*/		0b_00001 )k24	;wzór 7

	DS     (0b_11111 )k04+(	/*
*/		0b_11111 )k09+(	/*
*/		0b_11111 )k14+(	/*
*/		0b_11111 )k19+(	/*
*/		0b_11111 )k24+(	/*
*/		0b_11111 )k29+(	/*
*/		0b_11111 )k34	;wzór CR

	DS     (0b_01010 )k04+(	/*
*/		0b_00100 )k09+(	/*
*/		0b_01110 )k14+(	/*
*/		0b_00100 )k19+(	/*
*/		0b_01010 )k24	;wzór *

	DS     (0b_00111 )k04+(	/*
*/		0b_00100 )k09+(	/*
*/		0b_00100 )k14+(	/*
*/		0b_00100 )k19+(	/*
*/		0b_11111 )k24	;wzór 4

	DS     (0b_10000 )k04+(	/*
*/		0b_01010 )k09	;wzór ;

	DS     (0b_10000 )k04+(	/*
*/		0b_01000 )k09	;wzór ,

	DS     (0b_10111 )k04	;wzór !

	DS     (0b_01010 )k04	;wzór :

	DS     (0b_01110 )k04+(	/*
*/		0b_10001 )k09	;wzór (

	DS     (0b_10111 )k04+(	/*
*/		0b_10101 )k09+(	/*
*/		0b_10101 )k14+(	/*
*/		0b_10101 )k19+(	/*
*/		0b_01001 )k24	;wzór 5

	DS     (0b_00100 )k04+(	/*
*/		0b_00100 )k09+(	/*
*/		0b_11111 )k14+(	/*
*/		0b_00100 )k19+(	/*
*/		0b_00100 )k24	;wzór +

	DS     (0b_10001 )k04+(	/*
*/		0b_01110 )k09	;wzór )

	DS     (0b_10010 )k04+(	/*
*/		0b_11001 )k09+(	/*
*/		0b_10101 )k14+(	/*
*/		0b_10101 )k19+(	/*
*/		0b_10010 )k24	;wzór 2

	DS     (0b_11111 )k04+(	/*
*/		0b_10100 )k09+(	/*
*/		0b_10010 )k14+(	/*
*/		0b_10000 )k19+(	/*
*/		0b_10000 )k24	;wzór Ł

	DS     (0b_01110 )k04+(	/*
*/		0b_10101 )k09+(	/*
*/		0b_10101 )k14+(	/*
*/		0b_10101 )k19+(	/*
*/		0b_01000 )k24	;wzór 6

	DS     (0b_01110 )k04+(	/*
*/		0b_10001 )k09+(	/*
*/		0b_10101 )k14+(	/*
*/		0b_10001 )k19+(	/*
*/		0b_01110 )k24	;wzór 0

	DS     (0b_10010 )k04+(	/*
*/		0b_11111 )k09+(	/*
*/		0b_10000 )k14	;wzór 1

	DS     (0b_00010 )k04+(	/*
*/		0b_10101 )k09+(	/*
*/		0b_10101 )k14+(	/*
*/		0b_10101 )k19+(	/*
*/		0b_01110 )k24	;wzór 9

	DS     (0b_00010 )k04+(	/*
*/		0b_00001 )k09+(	/*
*/		0b_10101 )k14+(	/*
*/		0b_00101 )k19+(	/*
*/		0b_00010 )k24	;wzór ?

	DS     (0b_01000 )k04+(	/*
*/		0b_10111 )k09+(	/*
*/		0b_10111 )k14+(	/*
*/		0b_01001 )k19+(	/*
*/		0b_10100 )k24	;wzór &

	DS     (0b_01000 )k04+(	/*
*/		0b_01100 )k09+(	/*
*/		0b_01110 )k14+(	/*
*/		0b_01100 )k19+(	/*
*/		0b_01000 )k24	;wzór FS

	DS     (0b_10000 )k04	;wzór .

	DS     (0b_10000 )k04+(	/*
*/		0b_01000 )k09+(	/*
*/		0b_00100 )k14+(	/*
*/		0b_00010 )k19+(	/*
*/		0b_00001 )k24	;wzór /

	DS     (0b_01010 )k04+(	/*
*/		0b_01010 )k09+(	/*
*/		0b_01010 )k14+(	/*
*/		0b_01010 )k19+(	/*
*/		0b_01010 )k24	;wzór =

	DS     (0b_00010 )k04+(	/*
*/		0b_00110 )k09+(	/*
*/		0b_01110 )k14+(	/*
*/		0b_00110 )k19+(	/*
*/		0b_00010 )k24	;wzór LS

	KONIEC
---
